package beans;

import java.util.List;
import javax.naming.NamingException;

import co.edu.uniquindio.ondas.delegados.AdministradorDelegado;
import co.edu.uniquindio.ondas.entidades.Administrador;
import co.edu.uniquindio.ondas.entidades.Municipio;
import co.edu.uniquindio.ondas.entidades.Sede;


/**
 * @author Javier
 *Bean para el Administrador del Sistema
 */
public class AdministradorBean {
	
	/**
	 * Instacia del Delegador AdministradorDelegado
	 */
	private AdministradorDelegado administradorDelegado;
	
	/**
	 * Variable boolena autenticado permite identificar si el administrador inica sesion o no
	 */
	private boolean autenticado=false;
	/**
	 * Variable boolena municipioCreado permite identificar si el Municipio ha sido creado o no
	 */
	private boolean municipioCreado=false;
	
	/**
	 *Permite almacenar una Lista de intituciones
	 */
	private List<String> listaInstituciones;
	 /**
	 * Permite almacenar una Lista de Municipio
	 */
	private List<String>listaMunicipios;
	
	/**
	 * Instancia de un administrador
	 */
	private Administrador administrador= new Administrador();
	/**
	 * Instacia de un municipio
	 */
	private Municipio municipio=new Municipio();
	/**
	 * Instancia de la entidad Sede
	 */
	private Sede nuevaSede=new Sede();
	/**
	 * Lista de Lineas
	 */
	private List<String> listaLineas;
	
	
	/**
	 * Metodo que permite iniciar una Sesion a un Administrador
	 * @return
	 * @throws NamingException
	 */
	public String iniciarSesion() throws NamingException
	{
		administradorDelegado= new AdministradorDelegado();
		autenticado=administradorDelegado.inicioSesion(administrador.getIdentificacion(), administrador.getPassword());
			
		return "";
	}
	
	/**
	 * Metodo que permite cerrar la Sesion del perfil administrador
	 * @return
	 */
	public String cerrarSesion()
	{
		autenticado=false;
		
		return"administrador";
	}
	
	/**
	 * Metodo que permite crear un municipio
	 * @return
	 */
	public String crearMunicipio()
	{
		municipioCreado=administradorDelegado.crearMunicipio(municipio);
		listaMunicipios=administradorDelegado.getListaMunicipios();
		municipio=new Municipio();
		
		return"";
	}
	
	/**
	 * Metodo que permite onbtener Lista de Lineas tematicas
	 * @return nuevoAsesor
	 */
	public String obtenerListaLineas()
	{
		listaLineas=administradorDelegado.obtenerListaLineas();
		
		return "nuevoAsesor";
	}
	
	/**
	 * Metodo que permite obtener las Lineas tematicas de un Evaluador registrado en el sistema
	 * @return nuevoEvaluador
	 */
	public String obtenerListaLineasEvaluador()
	{
		listaLineas=administradorDelegado.obtenerListaLineas();
		
		return "nuevoEvaluador";
	}
	
	 /**
	  * Metodo que permite obtener una lista de Municipios
	 * @return nuevoMunicipio
	 * @throws NamingException
	 */
	public String listaMunicipios() throws NamingException
		{
	    	listaMunicipios=administradorDelegado.getListaMunicipios();
			
			return "nuevoMunicipio";
		}

	/**
	 *Metodo accesor del atributo administradorDelegado
	 * @return the administradorDelegado
	 */
	public AdministradorDelegado getAdministradorDelegado() {
		return administradorDelegado;
	}

	/**
	 *Metodo Modificador del atributo administradorDelegado
	 * @param administradorDelegado the administradorDelegado to set
	 */
	public void setAdministradorDelegado(AdministradorDelegado administradorDelegado) {
		this.administradorDelegado = administradorDelegado;
	}

	/**
	 *Metodo accesor del atributo autenticado
	 * @return the autenticado
	 */
	public boolean isAutenticado() {
		return autenticado;
	}

	/**
	 *Metodo Modificador del atributo autenticado
	 * @param autenticado the autenticado to set
	 */
	public void setAutenticado(boolean autenticado) {
		this.autenticado = autenticado;
	}

	/**
	 *Metodo accesor del atributo municipioCreado
	 * @return the municipioCreado
	 */
	public boolean isMunicipioCreado() {
		return municipioCreado;
	}

	/**
	 *Metodo Modificador del atributo municipioCreado
	 * @param municipioCreado the municipioCreado to set
	 */
	public void setMunicipioCreado(boolean municipioCreado) {
		this.municipioCreado = municipioCreado;
	}

	/**
	 *Metodo accesor del atributo listaInstituciones
	 * @return the listaInstituciones
	 */
	public List<String> getListaInstituciones() {
		return listaInstituciones;
	}

	/**
	 *Metodo Modificador del atributo listaInstituciones
	 * @param listaInstituciones the listaInstituciones to set
	 */
	public void setListaInstituciones(List<String> listaInstituciones) {
		this.listaInstituciones = listaInstituciones;
	}

	/**
	 *Metodo accesor del atributo listaMunicipios
	 * @return the listaMunicipios
	 */
	public List<String> getListaMunicipios() {
		return listaMunicipios;
	}

	/**
	 *Metodo Modificador del atributo listaMunicipios
	 * @param listaMunicipios the listaMunicipios to set
	 */
	public void setListaMunicipios(List<String> listaMunicipios) {
		this.listaMunicipios = listaMunicipios;
	}

	/**
	 *Metodo accesor del atributo administrador
	 * @return the administrador
	 */
	public Administrador getAdministrador() {
		return administrador;
	}

	/**
	 *Metodo Modificador del atributo administrador
	 * @param administrador the administrador to set
	 */
	public void setAdministrador(Administrador administrador) {
		this.administrador = administrador;
	}

	/**
	 *Metodo accesor del atributo municipio
	 * @return the municipio
	 */
	public Municipio getMunicipio() {
		return municipio;
	}

	/**
	 *Metodo Modificador del atributo municipio
	 * @param municipio the municipio to set
	 */
	public void setMunicipio(Municipio municipio) {
		this.municipio = municipio;
	}

	/**
	 *Metodo accesor del atributo nuevaSede
	 * @return the nuevaSede
	 */
	public Sede getNuevaSede() {
		return nuevaSede;
	}

	/**
	 *Metodo Modificador del atributo nuevaSede
	 * @param nuevaSede the nuevaSede to set
	 */
	public void setNuevaSede(Sede nuevaSede) {
		this.nuevaSede = nuevaSede;
	}

	/**
	 *Metodo accesor del atributo listaLineas
	 * @return the listaLineas
	 */
	public List<String> getListaLineas() {
		return listaLineas;
	}

	/**
	 *Metodo Modificador del atributo listaLineas
	 * @param listaLineas the listaLineas to set
	 */
	public void setListaLineas(List<String> listaLineas) {
		this.listaLineas = listaLineas;
	}
	
	

	//sin comentarios
//	public boolean isAutenticado() {
//		return autenticado;
//	}
//	public void setAutenticado(boolean autenticado) {
//		this.autenticado = autenticado;
//	}
//	public Administrador getAdministrador() {
//		return administrador;
//	}
//	public void setAdministrador(Administrador administrador) {
//		this.administrador = administrador;
//	}
//	public Municipio getMunicipio() {
//		return municipio;
//	}
//	public void setMunicipio(Municipio municipio) {
//		this.municipio = municipio;
//	}
//	
//	public Sede getNuevaSede() {
//		return nuevaSede;
//	}
//	public void setNuevaSede(Sede nuevaSede) {
//		this.nuevaSede = nuevaSede;
//	}
//	public List<String> getListaInstituciones() {
//		return listaInstituciones;
//	}
//	public void setListaInstituciones(List<String> listaInstituciones) {
//		this.listaInstituciones = listaInstituciones;
//	}
//	public List<String> getListaLineas() {
//		return listaLineas;
//	}
//	public void setListaLineas(List<String> listaLineas) {
//		this.listaLineas = listaLineas;
//	}
//
//	public boolean isMunicipioCreado() {
//		return municipioCreado;
//	}
//
//	public void setMunicipioCreado(boolean municipioCreado) {
//		this.municipioCreado = municipioCreado;
//	}
//
//	public List<String> getListaMunicipios() {
//		return listaMunicipios;
//	}
//
//	public void setListaMunicipios(List<String> listaMunicipios) {
//		this.listaMunicipios = listaMunicipios;
//	}
	
}
